package io;

import java.io.File;
import java.util.Scanner;

//简单的文件删除小程序
public class Demo13 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //1.先让用户输入一个要扫描的路径
        System.out.println("请输入要扫描的路径：");
        String path = scanner.next();
        File rootPath = new File(path);
        if(!rootPath.isDirectory()) {
            System.out.println("您输入的扫描的路径有误！！");
            return;
        }
        //2.再让用户输入一个的关键词
        System.out.println("请输入要删除文件的关键词：");
        String word = scanner.next();
        //3. 递归扫描路径
        // 通过这个方法进行递归扫描 传入要扫描的路劲 和要删除文件的关键词
        scanDir(rootPath, word);
    }

    private static void scanDir(File rootPath, String word) {
        File[] files = rootPath.listFiles();
        if(files == null) {
            // 当前目录为 null，直接返回
            return;
        }
        //遍历这里的每个元素，针对不同的类型做不同的处理
        for(File file : files) {
            // 加个日志，方便观察递归的执行过程
            System.out.println("当前扫描的文件："+file.getAbsolutePath());
            if(file.isFile()) {
                // 普通文件，检查文件是否要删除，并执行删除操作
                checkDelete(file, word);
            } else {
                // 目录， 递归扫描子目录
                scanDir(file, word);
            }
        }
    }

    private static void checkDelete(File file, String word) {
        if(!file.getName().contains(word)) {
            // 文件不包含关键词，直接返回
            return;
        }
        //需要删除 请用户确认是否要删除
        while(true) {
            System.out.println("当前文件为：" + file.getAbsolutePath() + "，您确认是否要删除(Y/n)：");
            Scanner scanner = new Scanner(System.in);
            String choice = scanner.next();
            if (choice.equals("Y") || choice.equals("y")) {
                file.delete();
                System.out.println("删除完毕！");
                break;
            } else if (choice.equals("N") || choice.equals("n")) {
                System.out.println("取消删除！");
                break;
            } else {
                System.out.println("输入有误，请重新选择！");
            }
        }
    }
}
